package com.candy.tcpdemo;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**
 * @author donglin
 * @Title:
 * @类名: ServerThread
 * @date 2020/6/3
 */
public class ServerThread extends Thread{
    //服务器的serverSocket
    //注意：服务器serverSocket监听的端口号要和客户端的端口号一致，否则无法建立连接
    private ServerSocket serverSocket;

    public ServerThread() {
        super("服务器：");
    }

    @Override
    public void run() {

        try {
            //初始化服务器的serverSocket
            serverSocket=new ServerSocket(9980);
            //使用服务器的serverSocket创建一个用户客户端建立连接的Socket
            Socket socket=serverSocket.accept();
            ////////////////////////////////////////接收消息//////////////////////////////////
            BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

            while (true){

                //读取客户端发送的消息
                String strSmg=br.readLine();
                System.out.println(strSmg);
                ////////////////////////////////////////发送消息//////////////////////////////////

                //获取socket的输出流对象
                BufferedWriter bf=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                //输出内容到网络，发送服务器
                Scanner sc=new Scanner(System.in);
                String strSendMsg=sc.next();
                bf.write(this.getName()+strSendMsg);
                System.out.println(Thread.currentThread().getName()+strSendMsg);
                //一般输出流将换行或者回车作为一行内容的结束，所以需要在发送之前输出一个换行符或者回车符表示一行内容结束
                //然后输出流将内容发送到网络给服务器
                bf.write("\n");
                bf.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
